/**
 * 19.12.7更新
 * 21.7.29:到最新
 */

import {OutlinePass as OriOutlinePass} from "three/examples/jsm/postprocessing/OutlinePass";

/**
 * 轮廓高亮
 *
 * @param enabled: boolean;
 * @param needsSwap: boolean;
 * @param clear: boolean;
 * @param renderToScreen: boolean;
 *
 * @param edgeThickness {number} 轮廓厚度：1
 * @param edgeStrength {number} 轮廓强度：3
 * @param edgeGlow {number} 轮廓辉光：0
 * @param downSampleRatio {number} 采样比：2
 * @param usePatternTexture {boolean} 使用遮罩纹理：false
 * @param patternTexture {texture|null} 遮罩纹理:null
 * @param visibleEdgeColor {color} 可见部分颜色：new THREE.Color(1,1,1)
 * @param hiddenEdgeColor {color} 遮挡部分颜色：new Color( 0.1, 0.04, 0.02 )
 * @param pulsePeriod {number} 闪烁间隔：0（无闪烁）
 */
export default class OutlinePass extends OriOutlinePass{
    constructor(resolution, scene, camera, selectedObjects){
        super(resolution, scene, camera, selectedObjects);
        console.log('this class is deprecated now ,use original class instead!');
    }

    /**
     * 添加目标对象（显示轮廓）
     * @param objs
     */
    addObject(...objs){
        for(let obj of objs){
            let idx=this.selectedObjects.findIndex((ot)=>ot.uuid===obj.uuid);
            if(idx<0){
                this.selectedObjects.push(obj);
            }
        }
    }

    /**
     * 移除目标对象（取消轮廓显示）
     * @param objs
     */
    removeObject(...objs){
        for(let obj of objs){
            let idx=this.selectedObjects.findIndex((ot)=>ot.uuid===obj.uuid);
            if(idx<0)continue;
            this.selectedObjects.splice(idx,1);
        }
    }

    /**
     * 清空目标对象
     */
    clearObject(){
        this.selectedObjects.length=0;
    }

}

